package com.lv7.core.util.helper;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Random;


/**
 * 字符串处理
 * @author Oven
 *
 */
public class TextHelper {

	/**
	 * 获得包含中文的字符串长度(一个中文为2个字符)
	 * @param text 字符串
	 * @return 字符串长度
	 */
	public static int getTextLength(String text) {
		if (ValidateHelper.isNullOrEmpty(text))
			return 0;
		int len = 0;
		for (int i = 0; i < text.length(); i++) {
			if (text.charAt(i) > 127 || text.charAt(i) == 94) {
				len += 2;
			} else {
				len++;
			}
		}
		return len;
	}
	
	/**
	 * 填充字符串，不足的加"0"
	 * @param number 整数
	 * @param length 长度
	 * @return 拼接字符串
	 */
	public static String fillWithZero(int number, int length) {
		return fillString(number, length, "0");
	}

	/**
	 * 填充字符串
	 * @param number 整数
	 * @param length 长度
	 * @param fill 填充字符
	 * @return 拼接字符串
	 */
	public static String fillString(int number, int length, String fill){
		
		StringBuffer sb = new StringBuffer("");
		
		String value = number + "";//数字转字符串
		int l = value.length();//数字长度
		
		if(l < length){
			for (int i = 0; i < (length - l); i++) {
				sb.append(fill);
			}
		}
		sb.append(value);
		
		return sb.toString();
	}
	
	/**
	 * 字符串encode
	 * @param text 原内容
	 * @return encode后内容
	 * @throws Exception 
	 */
	public static String encodeString(String text){
		try {
			return URLEncoder.encode(text, "UTF-8");
		} catch (UnsupportedEncodingException e) {
			System.err.println("encode string error");
			return text;
		}
	}
	
	/**
	 * 字符串decode
	 * @param text 原内容
	 * @return decode后内容
	 * @throws Exception 
	 */
	public static String decodeString(String text){
		try {
			return URLDecoder.decode(text, "UTF-8");
		} catch (UnsupportedEncodingException e) {
			System.err.println("decode string error");
			return text;
		}
	}

	/**
	 * 获取随机字符串
	 * @param length 长度
	 * @return 随机字符串
	 */
	public static String getRandomStringByLength(int length) {
		String base = "abcdefghijklmnopqrstuvwxyz0123456789";
		Random random = new Random();
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < length; i++) {
			int number = random.nextInt(base.length());
			sb.append(base.charAt(number));
		}
		return sb.toString();
	}
}
